本发明的一些实施例提供了用于模拟电路设计以使得模拟符合硬件语义的技术和系统。具体地,一些实施例通过适当处理会在逻辑模拟期间出现的状态元素中的竞争条件和/或时钟树中的假信号来确保模拟符合硬件语义。每个逻辑周期包括两个阶段:其中系统评估不取决于时钟信号的电路设计的信号值的激励施加阶段,和其中系统评估取决于时钟信号的信号值的时钟传播阶段。本发明的一些实施例在激励施加阶段期间取样信号值,且在时钟传播阶段期间使用取样信号值以处理会在逻辑模拟期间出现的状态元素中的竞争条件和/或时钟树中的假信号。
1.一种模拟电路设计的方法,其中模拟周期包括激励施加阶段和时钟传播阶段,其中在所述激励施加阶段评估不取决于时钟的信号值,且其中在所述时钟传播阶段评估取决于时钟的信号值,所述方法包括:接收所述电路设计的描述,其中所述电路设计包括电平敏感时序电路元件,其包括至少数据输入和至少数据输出,且其中当一组条件中的至少一个条件为真时,所述电平敏感时序电路元件将所述数据输入的值传播到所述数据输出;以及在所述模拟周期期间,通过至少以下步骤模拟所述电平敏感时序电路元件:在所述激励施加阶段期间,取样所述数据的输出值以获得取样输出值;以及在所述时钟传播阶段期间,响应确定所述一组条件中的所有条件为假,将所述取样输出值分配给所述数据输出。
2.根据权利要求1所述的方法,还包括分析所述电路设计的所述描述以识别主时钟和所述电平敏感时序电路元件。
3.根据权利要求1所述的方法,其中用支持取样指令的硬件描述语言来编写所述电路设计的所述描述,在执行该取样指令时导致被指定为所述取样指令的参数的信号值在所述激励施加阶段期间被取样。
4.根据权利要求3所述的方法,还包括重写所述电路设计的所述描述以使得所述电路设计的所述重写的描述使用所述取样指令以取样所述数据输出的值。
5.根据权利要求1所述的方法,其中使用四值的逻辑来表示所述电路设计中的信号。
6.一种模拟电路设计的装置,其中模拟周期包括激励施加阶段和时钟传播阶段,其中在所述激励施加阶段评估不取决于时钟的信号值,且其中在所述时钟传播阶段评估取决于时钟的信号值,所述装置包括:接收机制,被配置为接收所述电路设计的描述,其中所述电路设计包括电平敏感时序电路元件,其包括至少数据输入和至少数据输出,且其中当一组条件中的至少一个条件为真时,所述电平敏感时序电路元件将所述数据输入的值传播到所述数据输出;激励施加机制,被配置为执行所述模拟周期的所述激励施加阶段;信号取样机制,被配置为在所述激励施加阶段取样所述数据输出的值以获得取样输出值;以及时钟传播机制,被配置为通过响应确定所述一组条件中的所有条件为假而至少将所述取样输出值分配给所述数据输出来执行所述模拟周期的所述时钟传播阶段。
7.根据权利要求6所述的装置,还包括分析机制,配置成分析所述电路设计的所述描述以识别主时钟和所述电平敏感时序电路元件。
8.根据权利要求6所述的装置,其中用支持取样指令的硬件描述语言来编写所述电路设计的所述描述,在执行该取样指令时导致被指定为所述取样指令的参数的信号值在所述激励施加阶段期间被取样。
9.根据权利要求8所述的装置,其中所述电路设计的所述描述被重写以使得所述电路设计的所述重写的描述包括用于取样所述数据输出的值的取样指令。
10.根据权利要求6所述的装置,其中使用四值的逻辑来表示所述电路设计中的信号。
11.一种模拟电路设计的方法,其中模拟周期包括激励施加阶段和时钟传播阶段,其中在所述激励施加阶段评估不取决于时钟的信号值,且其中在所述时钟传播阶段评估取决于时钟的信号值,所述方法包括:接收所述电路设计的描述,其中所述电路设计包括边缘触发时序电路元件,其包括至少数据输入、至少数据输出和至少时钟输入,其中所述边缘触发电路元件至少基于检测到从第一值到第二值的所述时钟输入的触发边缘转变来将所述数据输入的值传播到所述数据输出;以及在所述模拟周期期间,通过至少以下步骤模拟所述边缘触发时序电路元件:在所述激励施加阶段,取样所述数据输入的值以获得取样输入值,取样所述数据输出的值以获得取样输出值,以及取样所述时钟输入的值以获得取样时钟值;以及在时钟传播阶段期间,响应检测到所述时钟输入经历从所述第一值到所述第二值的触发边缘转变且所述取样时钟值等于所述第一值,将所述取样输入值分配给所述数据输出,以及响应检测到从所述第二值到所述第一值的所述时钟输入中的非触发边缘转变,将所述取样输出值分配给所述数据输出。
12.根据权利要求11所述的方法,还包括分析所述电路设计的所述描述以识别所述边缘触发时序电路元件。
13.根据权利要求11所述的方法,其中用支持取样指令的硬件描述语言来编写所述电路设计的所述描述,当执行所述取样指令时导致被指定为所述取样指令的参数的信号值在所述激励施加阶段被取样。
14.根据权利要求13所述的方法,还包括重写所述电路设计的所述描述以使得所述电路设计的所述重写的描述使用所述取样指令来取样所述数据输出的值。
15.根据权利要求11所述的方法,其中使用四值的逻辑来表示所述电路设计中的信号。
16.一种模拟电路设计的装置,其中模拟周期包括激励施加阶段和时钟传播阶段,其中在所述激励施加阶段评估不取决于时钟的信号值,且其中在所述时钟传播阶段评估取决于时钟的信号值,所述装置包括:接收机制,被配置为接收所述电路设计的描述,其中所述电路设计包括边缘触发时序电路元件,其包括数据输入、数据输出和时钟输入,其中所述边缘触发时序电路元件至少基于检测到从第一值到第二值的所述时钟输入的触发边缘转变来将所述数据输入的值传播到所述数据输出;激励施加机制,被配置为执行所述模拟周期的激励施加阶段;信号取样机制,被配置为:在激励施加阶段期间取样所述数据输入的值以获得取样输入值,在激励施加阶段期间取样所述数据输出的值以获得取样输出值,以及在激励施加阶段期间取样所述时钟输入的值以获得取样时钟值;以及时钟传播机制,被配置为通过至少以下步骤执行所述模拟周期的所述时钟传播阶段:响应检测到所述时钟输入经历从所述第一值到所述第二值的触发边缘转变且所述取样时钟值等于所述第一值,将所述取样输入值分配给所述数据输出,以及响应检测到从所述第二值到所述第一值的所述时钟输入中的非触发边缘转变,将所述取样输出值分配给所述数据输出。
17.根据权利要求16所述的装置,还包括分析机制,被配置成分析所述电路设计的所述描述以识别所述边缘触发时序电路元件。
18.根据权利要求16所述的装置,其中用支持取样指令的硬件描述语言来编写所述电路设计的所述描述,当执行所述取样指令时导致被指定为所述取样指令的参数的信号值在所述激励施加阶段被取样。
19.根据权利要求18所述的装置,其中所述电路设计的所述描述被重写以使得所述电路设计的所述重写的描述使用所述取样指令来取样所述数据输出的值。
20.根据权利要求16所述的装置,其中使用四值的逻辑来表示所述电路设计中的信号。
技术领域本公开大体上涉及电子设计自动化。更具体地,本公开涉及用于逻辑模拟和/或仿真的方法和装置。
背景技术已经通过设计和验证工具的进步促成计算技术的快速进步,因为没有这些工具,将几乎不可能设计和验证在当今计算装置中经常发现的复杂集成电路。逻辑模拟和仿真技术在验证电路设计中起重要作用。注意,通常期望改进逻辑模拟和/或仿真技术的精确度。例如,半导体公司通常使用硬件仿真通过将电路设计仿真几百万个周期来验证电路设计的行为。如果在硬件仿真期间检测到故障,那么通常将故障定位到合理的小范围周期,例如,几千周期。随后,在小范围周期执行详细的逻辑模拟以将电路排除故障。为了使用此方法将电路成功排除故障,模拟器应该以符合硬件语义的方式理想地模拟电路。如果逻辑模拟器以不符合硬件语义的方式模拟电路,那么逻辑模拟器可能不能再现故障,或者在模拟期间故障会不同地表明其自身。在任一种状况下,将不能修复故障。不幸地,传统逻辑模拟器不能以符合硬件语义的方式来模拟电路。
发明内容本发明的一些实施例提供用于模拟电路设计的技术和系统,其中模拟符合硬件语义。明确地,一些实施例通过适当处理会在逻辑模拟期间出现的状态元素中的竞争条件和/或时钟树中的假信号(glitch)来确保模拟符合硬件语义。请注意,可以在不同的抽象水平模拟电路。另外,可以使用不同技术来模拟电路。此公开中所描述的技术和系统通常适用于需要适当处理会在逻辑模拟期间出现的状态元素中的竞争条件和/或时钟树中的假信号的任何类型的逻辑模拟。明确地说,可以在逻辑模拟器和仿真器中使用此公开中所描述的技术和系统。一个逻辑模拟周期可以认为包括两个阶段:激励施加阶段和时钟传播阶段。在激励施加阶段中,施加激励且值传播通过组合逻辑。在激励施加阶段的末尾,组合逻辑反映所施加的激励的作用。请注意,在这一阶段中传播的值不依赖于时钟信号。在时钟传播阶段中,系统评估依赖于时钟信号的信号值。本发明的一些实施例在激励施加阶段期间取样信号值,且在时钟传播阶段期间使用所取样的信号值来处理会在逻辑模拟期间出现的状态元素中的竞争条件和/或时钟树中的假信号。明确地说,为了确保逻辑模拟符合硬件语义,一些实施例以与常规逻辑模拟器不同的方式来模拟电平敏感时序电路元件(例如,锁存器)和边缘触发时序电路元件(例如,触发器)。请注意,电路可以包括一个或多个电平敏感时序电路元件和/或一个或多个边缘触发时序电路元件。本发明的一些实施例确保满足以下要求:(1)当在相同时钟周期内评估两个或两个以上边缘触发时序电路元件时,其中一个边缘触发时序电路元件的新输出值应不影响该周期中另一个边缘触发时序电路元件的输出值;(2)如果到周期结束,锁存器的时钟变成稳定不激活,那么在时钟传播阶段期间电平敏感时序电路元件的输出应不改变;以及(3)即使其中一个时钟是更新时序电路元件的结果,也需要满足以上两个要求。当一组条件中的至少一个条件是真时,电平敏感时序电路元件将其输入值传播到其输出。系统可以如下模拟电平敏感时序电路元件。在激励施加阶段期间,系统可以取样电平敏感时序电路元件的输出以获得取样值。接着,在时钟传播阶段期间,如果系统确定该组条件中的所有条件为假,那么系统可以向时序元件的输出分配取样值。边缘触发时序电路元件在其时钟输入的至少一个上接收触发边缘转变时将其数据输入值传播到其数据输出。在不失一般性的情况下,我们可以假定触发边缘转变在时钟输入从第一值转变为第二值时发生。对于正边缘触发时序元件而言,第一值是低值且第二值是高值,而对于负边缘触发时序元件而言,第一值是高值且第二值是低值。系统可以如下模拟边缘触发时序电路元件。在激励施加阶段期间,系统可以取样边缘触发时序电路元件的输入、输出和时钟以获得取样输入值、取样输出值和取样时钟值。接着,在时钟传播阶段期间,如果系统检测出时钟输入经历从第一值到第二值的触发边缘转变,且取样的时钟值等于第一值,那么系统可以向时序电路元件的数据输出分配取样的输入值。另外,在时钟传播阶段期间,如果系统检测出在时钟输入中从第二值到第一值的非触发边缘转变,那么系统可以向时序电路元件的数据输出分配取样的输出值。请注意,时序元件的输出可能在激励施加阶段期间系统取样其值之后已经改变。因此,当系统向时序元件的输出分配取样值时,系统向时序元件的输出有效分配与将已经由常规模拟器和/或仿真器分配的值不同的值。时序元件的输出的此条件修改防止了归因于状态元素中的竞争条件和/或时钟信号中的假信号的逻辑模拟和/或仿真的不精确性。特别是,本发明的实施例通常可以与包括(但不限于)事件驱动模拟器、基于周期的模拟器和使用健忘模拟技术的模拟器的任何模拟器一起使用。请注意,在时钟传播阶段期间,可能不能确定当前评估是否是最后评估。然而,如果系统确保在每个评估结束时模拟状态符合硬件语义,那么可以保证在最后评估之后模拟状态将符合硬件。本发明的一些实施例确保在每个评估结束时模拟状态符合硬件语义,从而确保在时钟传播阶段结束时模拟状态符合硬件语义。硬件描述语言可以或者不可以支持取样指令。如果硬件描述语言不支持取样指令,那么系统可以修改硬件描述语言的语义以使得模拟器以符合硬件语义的方式模拟或仿真时序电路元件。另一方面,如果硬件描述语言支持取样指令,那么系统可以可选地使用取样指令来重写时序电路元件的描述以使得重写的电路描述符合硬件语义。请注意,本发明的实施例可以适用于两值逻辑以及多值逻辑。明确地说,本发明的实施例可以用于模拟四值的逻辑。
附图说明图1示出根据本发明的一个实施例的集成电路的设计和制造过程中的多个阶段。图2示出根据本发明的一个实施例的用于分析电路设计的示例性计算环境。图3示出根据本发明的一个实施例的说明用于产生电路设计的模拟输出的过程的流程图。图4示出根据本发明的一个实施例的说明用于模拟电平敏感时序电路元件的过程的流程图。图5A和5B示出根据本发明的一个实施例的说明用于模拟边缘触发时序电路元件的过程的流程图。图6A示出根据本发明的一个实施例的具有锁存器的示例性电路设计。图6B示出根据本发明的一个实施例的具有触发器的示例性电路设计。图7A示出来自锁存器的常规逻辑模拟的示例性模拟输出。图7B示出根据本发明的一个实施例的使用其使用取样值的新语义来模拟的锁存器的示例性模拟输出。图8A示出来自触发器的常规逻辑模拟的示例性模拟输出。图8B示出根据本发明的一个实施例的使用新语义来模拟的触发器的示例性模拟输出。图9示出根据本发明的一个实施例的促进根据硬件语义来模拟电路设计的示例性计算机系统。图10示出根据本发明的一个实施例的促进电路设计的逻辑模拟的装置。表格1A和1B示出根据本发明的一个实施例的如何可以使用新语义来模拟锁存器(其为电平敏感时序电路元件)。以下示出的表格2示出根据本发明的一个实施例的如何使用新语义来模拟触发器(其为边缘触发时序元件)。
具体实施方式以下描述被呈现为使得任何本领域技术人员能够制造和使用实施例,且在具体应用和其要求的上下文中提供。对于本领域技术人员而言,对所公开的实施例的多种修改将是显而易见的,且本文定义的一般原理可以适用于其他实施例和应用,而不偏离本公开的精神和范围。因此,本发明并不限于所示的实施例,而是符合与本文公开的原理和性质一致的最广范围。此具体实施方式中描述的数据结构和代码通常存储在计算机可读存储介质上,计算机可读存储介质可以是可以存储由计算机系统使用的代码和/或数据的任何设备或介质。计算机可读存储介质包括(但不限于)易失存储器、非易失存储器、诸如磁盘驱动、磁带、CD(光盘)、DVD(数字多功能盘或数字视频盘)的磁和光存储设备或现在已知或稍后开发的能够存储计算机可读介质的其他介质。具体实施方式部分中所描述的方法和过程可以具体化为可以存储在上述计算机可读存储介质中的代码和/或数据。当计算机系统读取和执行存储在计算机可读存储介质上的代码和/或数据时,计算机系统执行具体化为数据结构和代码且存储在计算机可读存储介质内的方法和过程。另外,本文所描述的方法和过程可以包括在硬件模块或装置中。这些模块或装置可以包括(但不限于)专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)、在特定时间执行特定软件模块或一段代码的专用或共用处理器和/或现在已知或稍后开发的其他可编程逻辑设备。当激活硬件模块或装置时,其执行包括在其内的方法和过程。
集成电路(IC)设计流程图1示出根据本发明的一个实施例的集成电路的设计和制造过程中的多个阶段。IC设计过程通常从使用EDA过程(操作110)来实现的产品概念(操作100)开始。一旦设计完成,通常将其流片(事件140),此时其通过制造过程(操作150)以及封装和组装过程(操作160),以生产所制造的微芯片(结果170)。EDA过程(操作110)包括操作112-130,以下仅出于说明性目的对其进行描述且并不打算限制本发明。明确地说,实际集成电路设计可以要求设计者以与以下描述的顺序不同的顺序来执行设计操作。系统设计(操作112):在此阶段中,设计者描述实施产品构思的功能。其还可以执行假设分析(what-if)规划来精化功能、执行成本分析等。硬件-软件体系结构区分会在此阶段出现。可以在此阶段使用的来自Synopsys公司的示例性EDA软件产品包括ModelArchitect、
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="218"/>Systemxa0Studio和
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="402"/>逻辑设计和功能验证(操作114):在此阶段,编写用于系统中的模块的VHDL,Verilog或Systemxa0Verilog代码,且针对功能准确性检查设计。更明确地说,检查设计以确保其产生正确的响应。可以在此阶段使用的来自Synopsys公司的示例性EDA软件产品包括
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="700"/>MagellanTM、
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="335"/>ESP和
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="202"/>综合和用于测试的设计(操作116):在此阶段可以将VHDL/Verilog源代码转译成网表。可以针对目标技术最佳化网表,且可以设计并实施测试来检查所制造的微芯片。可以在此阶段使用的来自Synopsys公司的示例性EDA软件产品包括Design
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="319"/>Physical
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="318"/>Testxa0Compiler、Powerxa0Compiler
TM、FPGAxa0Compiler、
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="338"/>和
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="400"/>网表验证(操作118):在此阶段,针对与定时限制的兼容性且与VHDL/Verilog源代码的一致性而检查网表。可以在此阶段使用的来自Synopsys公司的示例性EDA软件产品包括
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="338"/>
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="344"/>和
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="196"/>设计规划(操作120):在此阶段,针对定时和顶层布线,构造并分析用于微芯片的全部平面布置图。可以在此阶段使用的来自Synopsys公司的示例性EDA软件产品包括Astro
TM和ICxa0Compiler产品。物理实施(操作122):放置(电路元件的定位)和布线(互连的放置)在此阶段发生。可以在此阶段使用的来自Synopsys公司的示例性EDA软件产品包括Astro
TM和ICxa0Compiler产品。分析和提取(操作124):在此阶段,在晶体管级验证电路功能;此又允许假设分析精化。可以在此阶段使用的来自Synopsys公司的示例性EDA软件产品包括AstroRail
TM、PrimeRail、
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="345"/>和Star-RCXT
TM。物理验证(操作126):在此阶段,检查设计以确保制造、电事项、光刻事项和电路的正确性。Hercules
TM是可以在此阶段使用的来自Synopsys公司的示例性EDA软件产品。分辨率增强(操作128):此阶段涉及布局的几何操纵,以改进设计的可制造性。可以在此阶段使用的来自Synopsys公司的示例性EDA软件产品包括Proteus/Progen、ProteusAF和PSMGen。掩模数据准备(操作130):此阶段提供流片(tape-out)数据用于掩模的制造以生产最终芯片。可以在此阶段使用的来自Synopsys公司的示例性EDA软件产品包括
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="214"/>系列产品。
逻辑模拟系统图2示出根据本发明的一个实施例的用于分析电路设计的示例性计算环境。计算环境200可以包括工作站202、逻辑模拟系统204和电路仿真系统206。在操作期间,用户208可以使用工作站202建立用于电路的实施。用户208可以使用逻辑模拟系统204来模拟电路设计210的部分,并产生模拟输出214。用户208还可以使用电路仿真系统206来仿真电路设计210,并产生仿真输出212。请注意,电路仿真系统206可以使用专用硬件来加速电路仿真。如果仿真输出212指示电路设计210具有故障,那么用户208可以使用逻辑模拟系统204来帮助电路设计210排除故障。图3示出根据本发明的一个实施例的用于模拟电路设计的过程的流程图。该过程可以由计算机系统来执行,该计算机系统包括存储在由计算机系统执行时使计算机系统模拟电路设计的指令的计算机可读存储介质。系统可以从接收电路设计的描述开始(操作302)。可以使用任何硬件描述语言来描述电路,语言包括(但不限于)VHDL、Verilog、Systemxa0Verilog或现在已知或稍后开发的任何其他硬件描述语言。随后,系统可以分析电路设计的描述以识别需要根据新语义来模拟的时序电路元件和主时钟(操作304)。接着,系统可以根据新语义来模拟电路设计(操作306)。在一些实施例中,可以修改编译器以使得编译器产生的可执行程序包括实施新语义的指令。在其他实施例中,系统可以使用“取样”指令来重写电路描述,从而使得重写的描述实施新语义。在每个模拟周期中,系统可以通过施加试验台激励来执行激励施加阶段(操作308),其中系统评估不取决于电路设计的时钟输入的信号。在激励施加阶段期间,或者在完成激励施加阶段之后且在时钟传播阶段开始之前,系统可以取样与时序电路元件相关的信号(操作310)。接着,系统可以执行时钟传播阶段(操作312),其中系统可以评估取决于电路设计的时钟输入的信号。
电平敏感时序元件电平敏感时序元件通常是当满足一个或多个条件时将数据输入值传播给数据输出的任何时序元件。例如,如果锁存器的时钟输入(即,使能信号)稳定激活,那么锁存器将其数据输入值传播给其输出。请注意,通常,电平敏感时序元件可以具有多个输入和输出。另外,将电平敏感时序元件的输入值传播给其输出的一个或多个条件可以任意复杂。表格1A和1B示出了根据本发明的一个实施例如何使用新语义来模拟锁存器(其为电平敏感时序电路元件)。可以使用以下硬件描述语言语句来描述锁存器:“always(Corxa0D)if(C)Q=D,”,其中“C”是锁存器的时钟输入,“D”是锁存器的输入,且“Q”是锁存器的输出。本发明的一些实施例根据与由常规模拟器使用的常规语义不同的新语义来模拟锁存器。明确地说,如以下表格1A中所示,如下模拟锁存器。如果锁存器的时钟输入(C)的值改变,或者如果锁存器的数据输入(D)的值改变,那么如果时钟输入(C)保持稳定激活值,那么向锁存器的数据输出(Q)分配来自数据输入(D)的值。否则,向锁存器的数据输出分配取样值。always(Cxa0orxa0D)xa0xa0xa0xa0xa0xa0if(C)Q=Dxa0elsexa0Q=sample(Q);表格1A请注意,表格1A仅说明表示新语义的许多方式中的一个。例如,以下示出的表格1B以不同方式表示新语义。表格1B中的第一语句重复常规语义的行为:如果锁存器的时钟输入(C)的值改变,或者如果锁存器的数据输入(D)的值改变,那么如果时钟输入保持触发值(即,稳定激活值),那么向锁存器的数据输出(Q)分配来自数据输入(D)的值。第二语句是新的,即,常规模拟器在模拟锁存器时将不会执行第二语句中所描述的操作。第二语句指定,如果时钟输入从触发值转变为非触发边缘值,那么向锁存器的数据输出分配来自数据输出的取样值。always(Cxa0orxa0D)xa0xa0xa0xa0if(C)Q=D;always(negedgexa0C)xa0xa0xa0Q=sample(Q);表格1B请注意,表格1A和1B中所示的新模拟语义适用于两值逻辑以及多值逻辑。明确地说,可以在四值逻辑模拟中使用新模拟语义。图4示出根据本发明的一个实施例的用于模拟电平敏感时序电路元件的过程的流程图。请注意,图4说明在新语义下执行的新操作。同样执行在常规语义(例如,表格1A中的第一语句)下执行的操作,但是为了清晰在图4中并未示出。系统可以从接收电路设计的描述(操作402)开始。接着,系统执行用于电路设计中的电平敏感时序电路元件的逻辑模拟的激励施加阶段(操作404)。请注意,当一组条件中的至少一个条件为真时,电平敏感时序电路元件将其输入值传播给其输出。在激励施加阶段,系统取样时序元件的数据输出,以获得取样输出值(操作406)。随后,系统执行用于时序电路元件的逻辑模拟的时钟传播阶段(操作408)。在时钟传播阶段中,系统确定是否该组条件中的所有条件为假(操作410)。如果该组条件中的所有条件为假,那么系统将取样输出值分配给时序电路元件的数据输出信号(操作412)。如果该组条件中的至少一个条件为真时,系统可以根据常规语义来模拟。在一些实施例中,操作406直到激励施加阶段结束取样信号值,且系统保持取样值至少贯穿随后的时钟传播阶段。因此,如果时钟传播阶段引起信号值改变,那么信号的取样值将保持不受改变影响。此公开中的后面部分描述新语义如何帮助确保即使在状态元素中出现竞争条件和/或在时钟树中出现假信号,电平敏感时序电路元件的模拟也将符合硬件语义。
边缘触发时序元件边缘触发时序元件通常具有一个或多个输入、输出和时钟。边缘触发时序元件至少基于其时钟输入的至少一个的触发转变将其输入值传播给其输出。以下示出的表格2示出根据本发明的一个实施例如何使用新语义来模拟触发器(其为边缘触发时序元件)。触发器是可以由以下硬件描述语言代码描述的边缘触发时序元件:“always(posedgexa0C)Q=D,”,其中“D”是触发器的数据输入,“Q”是触发器的输出,且“C”是触发器的时钟输入。用于触发器的表格2中所示的新语义中的第一语句指定,如果触发器的时钟输入(即,信号C)执行触发转变,且如果取样的时钟值等于零,那么向触发器的数据输出分配来自触发器的数据输入的取样值。第二语句指定,如果时钟输入执行非触发转变,那么向触发器的数据输出分配来自数据输出的取样值。请注意,表格2中所示的触发器实例假定,在不失一般性的情况下,触发转变是从0值到1值。表格2中所示的新模拟语义适用于两值逻辑以及多值的逻辑。明确地说,可以在四值的逻辑模拟中使用新模拟语义。always(posedgexa0C)xa0xa0xa0if(sample(C)==0)Q=sample(D);always(negedgexa0C)xa0xa0xa0Q=sample(Q);表格2图5A和5B示出根据本发明的一个实施例的用于模拟边缘触发时序电路元件的过程的流程图。请注意,图5A和5B说明在新语义下执行的新操作。已经在图5A和5B中使用标记“B1”和“B2”来将流程图分为两页。系统可以从接收电路设计的描述开始(操作502)。接着,系统执行用于电路设计中的边缘触发时序电路元件的逻辑模拟的激励施加阶段(操作504)。在激励施加阶段期间,系统取样时序电路元件的数据输入以获得取样输入值(操作506)、取样时序电路元件的数据输出以获得取样输出值(操作508)且取样时序电路元件的时钟输入以获得取样时钟值(操作510)。请注意,图5A中所示的取样次序仅用于说明性目的。通常,系统可以按照任何次序取样信号。另外,可以直到激励施加阶段结束时取样信号,因为取样值需要等于信号在激励施加阶段的结束时所具有的值。随后,系统执行用于时序电路元件的逻辑模拟的时钟传播阶段(操作512)。在时钟传播阶段期间,系统确定时序电路元件的时钟输入是否执行从第一值(例如,0)到第二值(例如,1)的触发转变,且确定取样的时钟值是否等于第一值(操作514)。如果两个条件都符合,那么系统将取样的输入值分配给时序电路元件的数据输出信号(操作516)。另外,如图5B所示,系统确定在时钟传播阶段期间时钟输入是否执行非触发转变(操作530)。如果如此,那么系统将取样的输出值分配给时序电路元件的数据输出信号(操作532)。如以上提及,直到激励施加阶段结束时取样信号值,且系统保持所取样的值至少贯穿随后的时钟传播阶段。因此,如果在时钟传播阶段错误地改变信号的值,那么可以使用信号的取样值来校正错误。此公开中的后面部分描述新语义如何帮助确保即使在状态元素中出现一个或多个竞争条件和/或在时钟树中出现一个或多个假信号,触发器的模拟也将符合硬件语义。图6A示出根据本发明的一个实施例的具有锁存器的示例性电路设计。在一些实施例中,电路设计600可以包括时序元件602、锁存器604、组合逻辑612-614和时钟树逻辑616。在操作期间,数据输入606通过组合逻辑612传播到时序元件602的数据输入(即,信号S1.D)。当时钟输入608满足触发条件时,时序元件602将信号S1.D的值传播给信号S1.Q。信号S1.Q通过执行逻辑转变,从而产生用于输入信号X的输出值f(X)的组合逻辑614传播到锁存器604的数据输入信号(即,信号S2.D)。随后,如果时钟输入624在触发电平,那么锁存器604将信号S2.D的值传播给信号S2.Q。请注意,时钟树逻辑616至少基于时钟输入610产生时钟输入624。图6B示出根据本发明的一个实施例的具有触发器的示例性电路设计。在一些实施例中,电路设计630可以包括时序元件632、触发器634、组合逻辑642和644以及时钟树逻辑646。在操作期间,数据输入636通过组合逻辑642传播到时序元件632的数据输入(即,信号S1.D)。当时钟输入638满足触发条件时,时序元件632将信号S1.D的值传播给信号S1.Q。同样,信号S1.Q通过执行逻辑转变,从而产生用于输入信号X的输出值f(X)的组合逻辑644传播到触发器634的数据输入信号(即,信号S2.D)。随后,当时钟输入654经历触发转变时,触发器634将信号S2.D的值传播给信号S2.Q。时钟树逻辑646至少基于时钟输入640产生时钟输入654。在模拟期间,到一个或多个时序元件的时钟输入会经历假信号,其会导致时序元件在其不应改变其输出值的时候改变该值。或者,会存在竞争条件,这会导致零延迟模拟器将以下值分配给时序元件的输出,该值与模拟具有非零延迟的物理电路而得到的值不同。在任一个状况下,模拟将不符合硬件语义。图7A示出来自锁存器的常规逻辑模拟的示例性模拟输出。图7A可以说明用于图6A的电路600的模拟输出。请注意,模拟输出覆盖九个模拟重复(即,模拟重复t
1至t
9)。锁存器S2的时钟输入与锁存器S1的时钟输入相反。此时钟配置意在防止在单个时钟周期内电路的数据输入(即,信号S1.D)传播到电路的数据输出(即,信号S2.Q)。更明确地说,当S1.CLK具有触发值(即,逻辑1值)时,S1.Q从S1.D获得值,其随后传播到信号S2.D。随后,当信号S2.CLK获得触发值(且信号S1.CLK获得非触发值)时,信号S2.Q从S2.D获得值。不幸地,当时钟信号S1.CLK具有触发值时,模拟器会在时钟信号S2.CLK中错误地引入假信号(例如,在模拟重复t
5期间,信号S2.CLK触发)。在零延迟模拟中,假信号可以打开通过锁存器S1和S2的传播路径(即,从信号S1.D到信号S2.Q的传播路径)。此假信号会导致在模拟重复t
5期间信号S2.Q获得值f(I)。值f(I)打算直到模拟重复t
6当时钟信号S1.Q获得非触发值时才到达信号S2.Q。换言之,在常规模拟器中,如果信号S2.CLK经历非意图假信号,那么信号S2.Q将不符合硬件语义。另外,时钟信号S2.CLK会涉及到竞争条件中,从而使得在信号S1.CLK获得触发值(例如,模拟重复t
7)之后信号S2.CLK获得非触发值。在常规零延迟模拟中,因为当锁存器S1进入操作的透明模式时,锁存器S2保持操作的透明模式,所以竞争条件可以打开通过锁存器S1和S2的传播路径。此竞争条件导致在模拟重复t
7期间信号S2.Q获得值f(J),这应该直到模拟重复t
8才发生。换言之,在常规模拟器中,如果时钟信号S2.CLK涉及到竞争条件中,那么信号S2.Q将不符合硬件语义。图7B示出根据本发明的一个实施例的用于使用其使用采样值的新语义来模拟的锁存器的示例性模拟输出。图7B可以说明用于图6A的电路600的模拟输出。可以使用如表格1A和1B中所描述的新语义来模拟锁存器S1和S2。请注意,模拟输出覆盖九个模拟重复(即,模拟重复t
1至t
9)。另外,模拟重复包括激励施加阶段(由用于模拟重复t
i的指标D
i说明),且包括时钟传播阶段(由用于模拟重复t
i的指标C
i说明)。如以上,锁存器S2的时钟输入与锁存器S1的时钟输入相反。当S1.CLK具有触发值(例如,逻辑1值)且S2.CLK具有非触发值时,此时钟配置导致信号S1.Q从S1.D获得值。随后,当信号S2.CLK获得触发值(且S1.CLK获得非触发值)时,S2.Q从S2.D获得值。在一些实施例中,在激励施加阶段之后且在随后的时钟传播阶段之前(即,对于模拟重复t
i,在D
i之后且在C
i之前),SAMPLE(S2.Q)从信号S2.Q获得值。当时钟信号S1.CLK具有触发值重复模拟器将假信号错误地引入时钟信号S2.CLK中时(例如,在模拟重复t
5期间,信号S2.CLK触发),假信号可以打开通过锁存器S1和S2的传播路径(即,从信号S1.D到信号S2.Q的传播路径),这会导致在模拟重复t
5期间锁存器S2将值f(I)分配给其数据输出。然而,与常规零延迟逻辑模拟不同,本发明的一些实施例使用新语义来从此情况恢复,因为当信号S2.CLK在时钟传播阶段C
5期间获得非触发值时信号S2.Q从SAMPLE(S2.Q)获得值f(H),这会导致信号S2.Q保持在假信号之前其具有的值。换言之,通过使用取样值,即使模拟器将非意图假信号引入信号中,本发明的一些实施例也可以确保模拟符合硬件语义。另外,如以上所阐述,时钟信号S2.CLK会涉及到竞争条件中,从而使得在信号S1.CLK获得触发值之后,信号S2.CLK获得非触发值(例如,在模拟重复t
7的时钟传播阶段C
7期间)。竞争条件可以打开通过锁存器S1和S2的传播路径,这可以导致在模拟重复t
7期间模拟器将值f(J)分配给其数据输出。然而,与常规零延迟逻辑模拟不同,本发明的一些实施例使用新语义来从此情况恢复,因为当信号S2.CLK在时钟传播阶段C
7期间获得非触发值时信号S2.Q从SAMPLE(S2.Q)获得值f(I),这会导致信号S2.Q保持在竞争条件之前其具有的值。图8A说明来自触发器的常规逻辑模拟的示例性模拟输出。图8A可以说明用于图6B的电路630的模拟输出。请注意,模拟输出覆盖九个模拟重复(即,模拟重复t
1值t
9)。触发器S2的时钟输入基本上与触发器S1的时钟输入类似。当S1.CLK经历触发边缘转变(例如,从逻辑0到逻辑1的转变)时,信号S1.Q从S1.D获得值。同时,当S2.CLK获得触发边缘转变时,信号S2.Q从S2.D获得值。模拟器会将非意图假信号引入到时钟脉冲S2.CLK中,这会导致S2.CLK暂时保持逻辑零(例如,在模拟重复t
2期间,信号S2.CLK上的假信号)。在常规零延迟模拟中,假信号会导致在信号S2.CLK获得触发边缘转变时,信号S2.Q从信号S2.D获得值。此假信号导致在模拟重复t
2期间,信号S2.Q获得值f(H),这应该直到模拟重复t
4当时钟信号S1.Q获得触发边缘转变时才到达信号S2.Q。另外,如图8A所示,时钟信号S2.CLK可以经历另一个假信号,这导致S2.CLK暂时保持逻辑1(例如,在模拟重复t
8期间,信号S2.CLK上的假信号)。当信号S2.CLK获得触发边缘转变时,假信号可以导致信号S2.Q从信号S2.D获得值。此假信号导致在模拟重复t
8期间,信号S2.Q获得值f(J),这应该直到模拟重复t
9当时钟信号S1.Q获得触发边缘转变时才到达信号S2.Q。换言之,当时钟信号经历非意图假信号时,常规零延迟模拟器可能不符合硬件语义。另外,时钟信号S2.CLK可以涉及到竞争条件中,从而使得在信号S1.CLK获得触发边缘转变之后,信号S2.CLK获得触发边缘转变(例如,模拟重复t
4)。在常规零延迟模拟中,竞争条件可以导致信号在单一时钟周期内传播通过触发器S1和S2。更明确地,当信号S1.CLK获得触发边缘转变时,信号可以在竞争条件开始时传播到S1.Q。随后,当信号S2.CLK获得触发边缘转变时,信号可以在竞争条件结束时传播到S2.Q。此竞争条件导致在模拟重复t
4期间,信号S2.Q获得值f(I),这应该直到模拟重复t
6才发生。图8B示出根据本发明的一个实施例的用于使用新语义模拟的触发器的示例性模拟输出。图8B可以说明用于图6B的电路630的模拟输出。另外,可以使用表格2中所示的语义来模拟触发器S1和S2。请注意,模拟输出覆盖九个模拟重复(即,模拟重复t
1至t
9)。另外,模拟重复包括激励施加阶段(由用于模拟重复t
i的指标D
i说明),且包括时钟传播阶段(由用于模拟重复t
i的指标C
i说明)。如以上,触发器S2的时钟输入基本上与触发器S1的时钟输入类似。当S1.CLK获得触发边缘转变(例如,从逻辑0到逻辑1的转变)时,信号S1.Q从S1.D获得值。同时,当S2.CLK获得触发边缘转变时,信号S2.Q从S2.D获得值。本发明的一些实施例取样S2.CLK的值,以获得直到激励施加阶段结束时但是在随后的时钟传播阶段开始之前(即,对于模拟重复t
i而言,在D
i之后且在C
i之前)的SAMPLE(S2.CLK)。类似地,直到激励施加阶段结束时且在随后的时钟传播阶段开始之前,SAMPLE(S2.D)从信号S2.D获得值,且SAMPLE(S2.Q)从信号S2.Q获得值。当时钟信号S2.CLK经历假信号时,其导致S2.CLK暂时保持逻辑0(例如,在模拟重复t
2期间,信号S2.CLK上的假信号)。假信号会导致触发器在其时钟获得触发边缘转变时将新值分配给其数据输出。然而,与常规零延迟模拟不同,本发明的一些实施例从此情况恢复,因为当信号S2.CLK获得触发边缘转变时,SAMPLE(S2.CLK)不保持逻辑0。另外,当时钟信号S2.CLK经历导致S2.CLK暂时保持逻辑1的假信号(例如,在模拟重复t
8期间,信号S2.CLK上的假信号)时,其可以导致常规模拟器在其时钟获得触发边缘转变时将新值分配给其数据输出。然而,与常规零延迟逻辑模拟不同,当信号S2.CLK在时钟传播阶段C
8期间获得非触发边缘转变时,本发明的一些实施例通过导致信号S2.Q从SAMPLE(S2.Q)获得值f(I)来从此情况恢复。以此方式,本发明的一些实施例导致信号S2.Q保持在假信号之前其具有的值,且这样做时确保了模拟符合硬件语义。假设时钟信号S2.CLK涉及到竞争条件中,其中在信号S1.CLK获得触发边缘转变之后,信号S2.CLK获得触发边缘转变(例如,模拟重复t
4)。在常规模拟器中,竞争条件可以导致信号在单一时钟周期内传播穿过两个触发器。然而,与常规零延迟模拟器不同,当信号S2.CLK获得触发边缘转变时,本发明的一些实施例将SAMPLE(S2.D)分配给信号S2.Q,从而确保之间的竞争条件不会导致新值从S1.Q传播通过触发器S2。换言之,即使在电路中存在竞争条件,本发明的一些实施例也确保模拟符合硬件语义。图9示出根据本发明的一个实施例的促进根据硬件语义模拟电路设计的示例性计算机系统。计算机系统902包括处理器904、存储器906和存储设备908。另外,计算机系统902可以耦合到显示设备910、键盘912和指示设备913。存储设备908存储操作系统914、逻辑模拟系统916、硬件描述926、一组取样信号值928和模拟输出930。逻辑模拟系统916可以包括图形用户界面(GUI)918、激励施加模块920、时钟传播模块922和信号取样模块924。在操作期间,逻辑模拟系统916被从存储设备908载入存储器906中,且由处理器904执行。在一些实施例中,逻辑模拟系统916可以将关于电路设计的硬件描述926作为输入,且产生关于硬件描述926的模拟输出930,从而使得模拟输出930符合硬件语义。在一些实施例中,激励施加模块920执行用于硬件描述926的模拟的激励施加阶段。在操作期间,激励施加模块920评估不取决于时钟输入信号的硬件描述926的信号。时钟传播模块922执行用于硬件描述926的模拟的时钟传播阶段。在操作期间,时钟传播模块922评估取决于时钟输入信号的硬件描述926的信号。如果时钟传播模块922需要取样值来评估信号,那么时钟传播模块922可以向信号取样模块924提供信号,且信号取样模块924将返回信号的取样信号值928。在一些实施例中,信号取样模块924可以在激励施加阶段结束时(即,在激励施加阶段完成之后,且在随后的时钟传播阶段开始之前),取样关于硬件描述926的信号的值。为了这样,信号取样模块924读取关于硬件描述926中的信号的模拟值,且存储关于信号的取样信号值928直到在随后的激励施加阶段之后再次对其取样。另外,信号取样模块924可以在硬件描述926的模拟期间,向激励施加模块920并向时钟传播模块922提供取样信号值928。图10示出根据本发明的一个实施例促进执行电路设计的逻辑模拟的装置。装置1002可以包括可以通过有线或无线通信信道彼此通信的若干机制。可以使用一个或多个集成电路来实现装置1002,且其可以集成在计算机系统中,或者可以将其实现为能够与其他计算机系统和/或设备通信的独立设备。明确地说,逻辑模拟装置1002可以包括激励施加机制1004、时钟传播机制1006、信号取样机制1008和接收机制1010。在一些实施例中,逻辑模拟装置1002采用电路设计1012作为输入,且产生用于电路设计1012的模拟输出1020,从而使得模拟输出1020符合硬件语义。在一些实施例中,激励施加机制1004执行用于电路设计1012的模拟的激励施加阶段。在操作期间,激励施加机制1004评估不取决于时钟输入信号的电路设计1012的信号。如果激励施加机制1004需要取样值来评估信号,那么激励施加机制1004可以向信号取样机制1008提供信号1014,且信号取样机制1008将返回信号1014的取样值1018。类似地,时钟传播机制1006执行用于电路设计1012的模拟的时钟传播阶段。在操作期间,时钟传播机制1006评估取决于时钟输入信号的电路设计1012的信号。如果时钟传播机制1006需要取样值来评估信号,那么时钟传播机制1006可以向信号取样机制1008提供信号1016,且信号取样机制1008将返回信号1016的取样值1018。在一些实施例中,在激励施加阶段结束时(即,在激励施加阶段完成之后,且在随后的时钟传播阶段开始之前),信号取样机制1008可以取样用于电路设计1012的信号的值。为了这样,信号取样机制1008读取关于电路设计1012中的信号的模拟值,且存储信号的取样值直到在随后的激励施加阶段之后再次对其取样。另外,信号取样机制1008可以向激励施加机制1004和时钟传播机制1006提供电路设计1012的信号(例如,信号1014-1016)的取样值(例如,取样值1018)。多种实施例的先前描述是仅为说明和描述的目的而呈现的。其并非意在穷尽本发明或者将本发明限于所公开的形式。因此,对于本技术领域的专业人员而言,许多修改和变化是显而易见的。因此,以上公开并非意在限制本发明。